package edu.cibertec.fabrica;

import edu.cibertec.interface1.ActividadDAO;
import edu.cibertec.interface1.ClienteDAO;
import edu.cibertec.interface1.ClienteExpedienteDAO;
import edu.cibertec.interface1.DemandadoDAO;
import edu.cibertec.interface1.DetalleExpedienteDAO;
import edu.cibertec.interface1.DetalleMaestraDAO;
import edu.cibertec.interface1.EmpleadoDAO;
import edu.cibertec.interface1.ExpedienteActividadDAO;
import edu.cibertec.interface1.ExpedienteDAO;
import edu.cibertec.interface1.ExpedienteResponsableDAO;
import edu.cibertec.interface1.FacturaDAO;
import edu.cibertec.interface1.InformeCostoDAO;
import edu.cibertec.interface1.MaestraDAO;
import edu.cibertec.interface1.ProcesoActividadDAO;
import edu.cibertec.interface1.ProcesoDAO;
import edu.cibertec.interface1.ModuloDAO;
import edu.cibertec.interface1.ReciboPagoDAO;
import edu.cibertec.interface1.RolDAO;
import edu.cibertec.interface1.SolicitudDAO;
import edu.cibertec.interface1.TipoDocumentoDAO;
import edu.cibertec.interface1.UbigeoDAO;
import edu.cibertec.interface1.UsuarioDAO;

public abstract class DAOFactory {

	public static final int MYSQL = 1;
	public static final int SQLSERVER = 2;
	
	public abstract UsuarioDAO getUsuarioDAO();
	public abstract ModuloDAO getModuloDAO();
	public abstract RolDAO getRolDAO(); 
	public abstract TipoDocumentoDAO getDocumentoDAO();
	public abstract ClienteDAO getClienteDAO();
	public abstract ClienteExpedienteDAO getClienteExpedienteDAO();
	public abstract ExpedienteDAO getExpedienteDAO();
	public abstract ExpedienteResponsableDAO getExpedienteResponsableDAO();
	public abstract ExpedienteActividadDAO getExpedienteActividadDAO();
	public abstract ProcesoDAO getProcesoDAO();
	public abstract ActividadDAO getActividadDAO();
	public abstract FacturaDAO getFacturaDAO();

	
	//implementacion marco
	
	public abstract DetalleMaestraDAO getDetalleMaestraDAO();
	public abstract MaestraDAO getMaestraDAO();
	public abstract UbigeoDAO getUbigeoDAO();
	public abstract ReciboPagoDAO getReciboPagoDAO();
	public abstract DetalleExpedienteDAO getDetalleExpedienteDAO();
	public abstract EmpleadoDAO getEmpleadoDAO();
	public abstract ProcesoActividadDAO getProcesoActividadDAO();
	public abstract SolicitudDAO getSolicitudDAO();
	public abstract DemandadoDAO getDemandadoDAO();
	public abstract InformeCostoDAO getInformeCostoDAO();
	
			
	public static DAOFactory getFactorty(int fabrica) {
		switch (fabrica) {
			case MYSQL:
				return new MySqlDAOFActory();
			case SQLSERVER: return new SQLSERVERDAOFactory();	
			default: return null;
		}
	}

}
